import { SET_TODO, SET_TODO_LIST,REMOVE_TODO,SET_STATUS, SET_DOING } from "./actionsType";
import { IState, ITodo, TODO_STATUS } from '@/typeings';

export default {

    [SET_TODO] ( state : IState , todo : ITodo) : void {
        // state.list.unshift(todo)
        state.list = [todo , ...state.list ]
    },

    [SET_TODO_LIST] (state : IState , todoList : ITodo[]) : void {
        state.list = todoList
    },

    [REMOVE_TODO] (state : IState , id : number ) : void {
        state.list = state.list.filter( (item : ITodo) =>   item.id !== id )
    },

    [SET_STATUS] (state : IState , id : number ) : void {
        state.list = state.list.map((item : ITodo) => {
            if (item.id === id ) {
                // 考虑扩展性的话 多个就要用switch
                switch (item.status) {
                    case TODO_STATUS.Finished  :
                        item.status = TODO_STATUS.WillDo
                    break;
                    case TODO_STATUS.Doing  :
                    case TODO_STATUS.WillDo  :
                        item.status = TODO_STATUS.Finished
                    break;
                    default:
                    break;
                }
            }
            return item
        })
    },

    [SET_DOING] (state : IState , id : number ) : void {
        state.list = state.list.map( (item : ITodo) => {
            if (item.id === id) {
                switch (item.status) {
                    case TODO_STATUS.WillDo  :
                        item.status = TODO_STATUS.Doing
                    break;
                    case TODO_STATUS.Doing  :
                        item.status = TODO_STATUS.WillDo
                    break;
                    default:
                    break;
                }
            }
    
            return item
        })
    },

}